home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 041-050 / amok44 / m2ced / txt / ced.mod < prev    next >
Text File  |  1993-11-04  |  3KB  |  137 lines

  1. (**********************************************************************
  2.  
  3.     :Program.    CED.mod
  4.     :Contents.   Communication with CED
  5.     :Author.     Steffen Reith
  6.     :Address.    Hessenstr. 64, D-8700 Würzburg
  7.     :Copyright.  Shareware
  8.     :Language.   Modula-2
  9.     :Translator. M2Amiga A+L V3.2d
  10.     :Imports.    ARP,req
  11.     :History.    V1.0  1.June 1990
  12.  
  13. **********************************************************************)
  14. (* $S- $F- $N- $R- $V- *)
  15. IMPLEMENTATION MODULE CED;
  16.  
  17. FROM SYSTEM IMPORT ADR,ADDRESS,CAST;
  18. FROM Exec   IMPORT FindPort,MsgPort,MsgPortPtr,Message,Node,NodePtr,NodeType,
  19.                    PutMsg,WaitPort,Forbid,Permit,FreeMem;
  20. FROM Arp    IMPORT CreatePort,DeletePort,STRPTR;
  21. FROM req    IMPORT PathTypePtr;
  22.  
  23. CONST CEDPortName='rexx_ced';
  24.  
  25. TYPE CEDMsg=RECORD
  26.              cmNode:Message;
  27.              rfu1:LONGINT;
  28.              rfu2:LONGINT;
  29.              action:LONGINT;
  30.              result1:LONGINT;
  31.              result2:ADDRESS;
  32.              args:ARRAY [1..16] OF ADDRESS;
  33.              rfu7:LONGINT;
  34.              rfu8:LONGINT;
  35.              rfu9:LONGINT;
  36.              rfu10:LONGINT;
  37.              rfu11:LONGINT;
  38.              rfu12:LONGINT
  39.             END;
  40.  
  41. VAR Mes:CEDMsg;
  42.  
  43. PROCEDURE PutMsg2CED (Command:ARRAY OF CHAR):BOOLEAN;
  44.  
  45. VAR CEDMsgPort,Reply:MsgPortPtr;
  46.  
  47. BEGIN
  48.  
  49.  Fehler:=ok;
  50.  
  51.  CEDMsgPort:=FindPort(ADR(CEDPortName));
  52.  IF CEDMsgPort=NIL THEN
  53.   Fehler:=noCED;
  54.   RETURN FALSE
  55.  END;
  56.  
  57.  Reply:=CreatePort(ADR('Aloha_CED'),0);
  58.  IF Reply=NIL THEN
  59.   Fehler:=noReply;
  60.   RETURN FALSE
  61.  END;
  62.  
  63.  WITH Mes DO
  64.   args[1]:=ADR(Command);
  65.   cmNode.node.type:=message;
  66.   cmNode.length:=SIZE(CEDMsg);
  67.   action:=0;
  68.   result2:=0;
  69.   cmNode.replyPort:=Reply
  70.  END;
  71.  
  72.  PutMsg(CEDMsgPort,ADR(Mes));
  73.  WaitPort(Reply);
  74.  DeletePort(Reply);
  75.  
  76.  RETURN TRUE
  77. END PutMsg2CED;
  78.  
  79. PROCEDURE TalkCED(Command:ARRAY OF CHAR):BOOLEAN;
  80.  
  81. CONST Result=020000H; (* 1L<<17 *)
  82.  
  83. VAR CEDMsgPort,Reply:MsgPortPtr;
  84.  
  85. BEGIN
  86.  
  87.  Fehler:=ok;
  88.  
  89.  CEDMsgPort:=FindPort(ADR(CEDPortName));
  90.  IF CEDMsgPort=NIL THEN
  91.   Fehler:=noCED;
  92.   RETURN FALSE
  93.  END;
  94.  
  95.  Reply:=CreatePort(ADR('Aloha_CED'),0);
  96.  IF Reply=NIL THEN
  97.   Fehler:=noReply;
  98.   RETURN FALSE
  99.  END;
  100.  
  101.  WITH Mes DO
  102.   args[1]:=ADR(Command);
  103.   cmNode.node.type:=message;
  104.   cmNode.length:=SIZE(CEDMsg);
  105.   action:=Result; (* Come on Result *)
  106.   result2:=0;
  107.   cmNode.replyPort:=Reply
  108.  END;
  109.  
  110.  PutMsg(CEDMsgPort,ADR(Mes));
  111.  WaitPort(Reply);
  112.  DeletePort(Reply);
  113.  Status:=Mes.result2;                (* Bei mir liefert der CED nicht immer *)
  114.  Ergeb:=CAST(LONGINT,Mes.result2);   (* nullterminierte Strings zurueck !!! *)
  115.  
  116.  RETURN TRUE
  117. END TalkCED;
  118.  
  119. PROCEDURE KillString(Ptr:PathTypePtr);
  120.  
  121. TYPE LongPtr=POINTER TO LONGINT;
  122.  
  123. VAR Help:LONGINT;
  124.     Location:LongPtr;
  125.  
  126. BEGIN
  127.  Help:=LONGINT(Ptr);
  128.  DEC(Help,SIZE(LONGINT));
  129.  Location:=ADDRESS(Help);
  130.  FreeMem(Help,Location^)
  131. END KillString;
  132.  
  133. BEGIN
  134.  Status:=NIL;
  135.  Ergeb:=0;
  136. END CED.
  137.